1
ตัวแทนแก้ปัญหา
PolyU COMP5511บทเรียนที่ 2
00:00

จากการตอบสนองสู่การวางแผน

ในการพัฒนาการออกแบบตัวแทน เราได้ก้าวข้ามจากตัวแทนแบบตอบสนอง (Reflex Agents), ซึ่งจับคู่การรับรู้โดยตรงกับการกระทำตามกฎง่ายๆ (เช่น "ถ้ามีรถคันหน้าเบรก ให้เริ่มเบรก") ไปสู่ตัวแทนแก้ปัญหา (Problem-Solving Agents). ตัวแทนแบบตอบสนองจะทำงานตามบริบททันที ในขณะที่ตัวแทนแก้ปัญหาจะมีเป้าหมายเป็นหลัก. พวกเขาจะพิจารณาผลลัพธ์ในอนาคตของการกระทำเพื่อหาลำดับที่ตอบสนองวัตถุประสงค์ที่เฉพาะเจาะจง

  • ตัวแทนแบบตอบสนอง: $Action = Function(Percept)$
  • ตัวแทนวางแผน: $Action\_Sequence = Search(State, Goal)$

การแสดงสถานะแบบอะตอม

ในระดับพื้นฐานนี้ ตัวแทนจะใช้การแสดงสถานะแบบอะตอม (Atomic Representation). ซึ่งหมายความว่าสถานะของโลกจะถูกมองว่าเป็นกล่องดำ—โหนดเดียวที่ไม่มีโครงสร้างภายในให้เห็นแก่ขั้นตอนวิธีค้นหา ตัวแทนจะพิจารณาเฉพาะ:

  • สถานะ ($S$): ภาพรวมของสภาพแวดล้อม
  • การกระทำ ($A$):การเปลี่ยนแปลงระหว่างสถานะ
  • การทดสอบเป้าหมาย:การตรวจสอบค่าบูลีนว่าสถานะ $s \in S_{goal}$ หรือไม่

วงจรการแก้ปัญหา

ตัวแทนแก้ปัญหามีวงจรที่แตกต่างกันสี่ขั้นตอนเพื่อนำทางในสภาพแวดล้อม:

  1. การกำหนดเป้าหมาย:การตัดสินใจว่าจะดำเนินการตามวัตถุประสงค์ใดตามสถานการณ์ปัจจุบัน
  2. การกำหนดปัญหา:การสรุปโลกแห่งความเป็นจริงให้เป็นแบบจำลองทางคณิตศาสตร์ (สถานะและการกระทำ)
  3. การค้นหา:การจำลองลำดับของการกระทำเพื่อค้นหาเส้นทางที่เหมาะสมที่สุด.
  4. การดำเนินการ:การดำเนินการตามการกระทำที่พบระหว่างขั้นตอนการค้นหาโดยไม่ต้องพิจารณาเพิ่มเติม (สมมติว่าสภาพแวดล้อมคงที่)
การนำไปใช้ใน Python (agent_types.py)
1
class ReflexAgent:
2
defactself, percept):
3
# การจับคู่โดยตรง: กฎ -> การกระทำ
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__self):
8
self.seq = [] # ลำดับการกระทำที่บัฟเฟอร์ไว้
9
10
defactself, percept):
11
# ถ้าเรากำลังดำเนินการอยู่ ให้ดำเนินการต่อ
12
ifself.seq:
13
returnself.seq.pop0
14
15
# มิฉะนั้น วางแผน (ค้นหา)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# การค้นหาจะคืนค่ารายการการกระทำ
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop0